_m_u_l_t_i_p_l_e_x_o_r or log _d_r_i_v_e_r [see _l_o_g(7)], which is not associated with a
hardware device.
EEEEffffffffeeeeccccttttiiiivvvveeee UUUUsssseeeerrrr IIIIDDDD aaaannnndddd EEEEffffffffeeeeccccttttiiiivvvveeee GGGGrrrroooouuuupppp IIIIDDDD An active process has an
effective user ID and an effective group ID that are used to determine
file access permissions (see below). The effective user ID and effective
group ID are equal to the process's real user ID and real group ID
respectively, unless the process or one of its ancestors evolved from a
file that had the set-user-ID bit or set-group ID bit set [see _e_x_e_c(2)].
FFFFiiiilllleeee DDDDeeeessssccccrrrriiiippppttttoooorrrr A file descriptor is a small integer used to do I/O on a
file. The value of a file descriptor is from 0 to (NOFILES - 1). A
process may have no more than NOFILES file descriptors open
simultaneously. A file descriptor is returned by system calls such as
_o_p_e_n(2), or _p_i_p_e(2). The file descriptor is used as an argument by calls
such as _r_e_a_d(2), _w_r_i_t_e(2), _i_o_c_t_l(2), _m_m_a_p(2), _m_u_n_m_a_p(2), and _c_l_o_s_e(2).
NOFILES is a synonym for {_O_P_E_N__M_A_X}.
FFFFiiiilllleeee AAAAcccccccceeeessssssss PPPPeeeerrrrmmmmiiiissssssssiiiioooonnnnssss Read, write, and execute/search permissions on a
file are granted to a process if one or more of the following are true:
The effective user ID of the process is super-user.
The effective user ID of the process matches the user ID of the
owner of the file and the appropriate access bit of the ``owner''
portion (0700) of the file mode is set.
The effective user ID of the process does not match the user ID of
the owner of the file, and the effective group ID of the process
matches the group of the file and the appropriate access bit of the
``group'' portion (0070) of the file mode is set.
The effective user ID of the process does not match the user ID of
the owner of the file, and the effective group ID of the process
does not match the group ID of the file, and the appropriate access
bit of the ``other'' portion (0007) of the file mode is set.
Otherwise, the corresponding permissions are denied.
FFFFiiiilllleeee NNNNaaaammmmeeee Names consisting of 1 to {_N_A_M_E__M_A_X} characters may be used to
name an ordinary file, special file or directory.
These characters may be selected from the set of all character values
excluding \0 (null) and the ASCII code for //// (slash).
Note that it is generally unwise to use ****, ????, [[[[, or ]]]] as part of file
names because of the special meaning attached to these characters by the
shell [see _s_h(1)]. Although permitted, the use of unprintable characters
A file name is sometimes referred to as a pathname component. The
interpretation of a pathname component is dependent on the values of
_NNNN_AAAA_MMMM_EEEE______MMMM_AAAA_XXXX and ______PPPP_OOOO_SSSS_IIII_XXXX______NNNN_OOOO______TTTT_RRRR_UUUU_NNNN_CCCC associated with the path prefix of that
component. If any pathname component is longer than _NNNN_AAAA_MMMM_EEEE______MMMM_AAAA_XXXX and
______PPPP_OOOO_SSSS_IIII_XXXX______NNNN_OOOO______TTTT_RRRR_UUUU_NNNN_CCCC is in effect for the path prefix of that component [see
_ffff_pppp_aaaa_tttt_hhhh_cccc_oooo_nnnn_ffff(2) and _llll_iiii_mmmm_iiii_tttt_ssss(4)], it shall be considered an error condition in
that implementation. Otherwise, the implementation shall use the first
_NNNN_AAAA_MMMM_EEEE______MMMM_AAAA_XXXX bytes of the pathname component.
FFFFoooorrrreeeeggggrrrroooouuuunnnndddd PPPPrrrroooocccceeeessssssss GGGGrrrroooouuuupppp Each session that has established a connection
with a controlling terminal will distinguish one process group of the
session as the foreground process group of the controlling terminal.
This group has certain privileges when accessing its controlling terminal
that are denied to background process groups.
MMMMeeeessssssssaaaaggggeeee In a _s_t_r_e_a_m, one or more blocks of data or information, with
associated STREAMS control structures. _M_e_s_s_a_g_e_s can be of several
defined types, which identify the _m_e_s_s_a_g_e contents. _M_e_s_s_a_g_e_s are the
only means of transferring data and communicating within a _s_t_r_e_a_m.
MMMMeeeessssssssaaaaggggeeee QQQQuuuueeeeuuuueeee In a _s_t_r_e_a_m, a linked list of _m_e_s_s_a_g_e_s awaiting processing
by a _m_o_d_u_l_e or _d_r_i_v_e_r.
MMMMeeeessssssssaaaaggggeeee QQQQuuuueeeeuuuueeee IIIIddddeeeennnnttttiiiiffffiiiieeeerrrr A message queue identifier (msqid) is a unique
positive integer created by a _m_s_g_g_e_t(2) system call. Each msqid has a
message queue and a data structure associated with it. The data
structure is referred to as _m_s_q_i_d__d_s and contains the following members:
struct ipc_perm msg_perm;
struct msg *msg_first;
struct msg *msg_last;
ulong_t msg_cbytes;
ulong_t msg_qnum;
ulong_t msg_qbytes;
pid_t msg_lspid;
pid_t msg_lrpid;
time_t msg_stime;
time_t msg_rtime;
time_t msg_ctime;
mmmmssssgggg____ppppeeeerrrrmmmm is an ipc_perm structure that specifies the message operation
permission (see below). This structure includes the following members:
is the maximum number of bytes allowed on the queue.
mmmmssssgggg____llllssssppppiiiidddd
is the process id of the last process that performed a _m_s_g_s_n_d
operation.
mmmmssssgggg____llllrrrrppppiiiidddd
is the process id of the last process that performed a _m_s_g_r_c_v
operation.
mmmmssssgggg____ssssttttiiiimmmmeeee
is the time of the last _m_s_g_s_n_d operation.
mmmmssssgggg____rrrrttttiiiimmmmeeee
is the time of the last _m_s_g_r_c_v operation
mmmmssssgggg____ccccttttiiiimmmmeeee
is the time of the last _m_s_g_c_t_l(2) operation that changed a member of
the above structure.
MMMMeeeessssssssaaaaggggeeee OOOOppppeeeerrrraaaattttiiiioooonnnn PPPPeeeerrrrmmmmiiiissssssssiiiioooonnnnssss In the _m_s_g_o_p(2) and _m_s_g_c_t_l(2) system call
descriptions, the permission required for an operation is given as
"{token}", where "token" is the type of permission needed, interpreted as
RRRReeeeaaaallll UUUUsssseeeerrrr IIIIDDDD aaaannnndddd RRRReeeeaaaallll GGGGrrrroooouuuupppp IIIIDDDD Each user allowed on the system is
identified by a positive integer 0 to {_U_I_D__M_A_X} (2,147,483,647) called a
real user ID.
Each user is also a member of a group. The group is identified by a
positive integer called the real group ID.
An active process has a real user ID and real group ID that are set to
the real user ID and real group ID, respectively, of the user responsible
for the creation of the process.
RRRRooooooootttt DDDDiiiirrrreeeeccccttttoooorrrryyyy aaaannnndddd CCCCuuuurrrrrrrreeeennnntttt WWWWoooorrrrkkkkiiiinnnngggg DDDDiiiirrrreeeeccccttttoooorrrryyyy Each process has associated
with it a concept of a root directory and a current working directory for
the purpose of resolving path name searches. The root directory of a
process need not be the root directory of the root file system.
SSSSaaaavvvveeeedddd UUUUsssseeeerrrr IIIIDDDD aaaannnndddd SSSSaaaavvvveeeedddd GGGGrrrroooouuuupppp IIIIDDDD The saved user ID and saved group ID are
the values of the effective user ID and effective group ID prior to an
_eeee_xxxx_eeee_cccc of a file [see _eeee_xxxx_eeee_cccc(2)].
SSSSeeeemmmmaaaapppphhhhoooorrrreeee IIIIddddeeeennnnttttiiiiffffiiiieeeerrrr A semaphore identifier (semid) is a unique positive
integer created by a _s_e_m_g_e_t(2) system call. Each semid has a set of
semaphores and a data structure associated with it. The data structure
is referred to as _s_e_m_i_d__d_s and contains the following members:
is equal to the number of semaphores in the set. Each semaphore in
the set is referenced by a nonnegative integer referred to as a
_s_e_m__n_u_m. Sem_num values run sequentially from 0 to the value of
sem_nsems minus 1.
sssseeeemmmm____oooottttiiiimmmmeeee
is the time of the last _s_e_m_o_p(2) operation.
sssseeeemmmm____ccccttttiiiimmmmeeee
is the time of the last _s_e_m_c_t_l(2) operation that changed a member of
the above structure.
A semaphore is a data structure called _s_e_m that contains the following
members:
ushort_t semval; /* semaphore value */
pid_t sempid; /* pid of last operation */
ushort_t semncnt; /* # awaiting semval > cval */
ushort_t semzcnt; /* # awaiting semval = 0 */
sssseeeemmmmvvvvaaaallll
is a non-negative integer which is the actual value of the
semaphore.
sssseeeemmmmppppiiiidddd
is equal to the process ID of the last process that performed a
semaphore operation on this semaphore.
sssseeeemmmmnnnnccccnnnntttt
is a count of the number of processes that are currently suspended
awaiting this semaphore's semval to become greater than its current
value.
sssseeeemmmmzzzzccccnnnntttt
is a count of the number of processes that are currently suspended
awaiting this semaphore's semval to become zero.
SSSSeeeemmmmaaaapppphhhhoooorrrreeee OOOOppppeeeerrrraaaattttiiiioooonnnn PPPPeeeerrrrmmmmiiiissssssssiiiioooonnnnssss In the _s_e_m_o_p(2) and _s_e_m_c_t_l(2) system call
descriptions, the permission required for an operation is given as
"{token}", where "token" is the type of permission needed interpreted as
SSSShhhhaaaarrrreeeedddd MMMMeeeemmmmoooorrrryyyy OOOOppppeeeerrrraaaattttiiiioooonnnn PPPPeeeerrrrmmmmiiiissssssssiiiioooonnnnssss In the _s_h_m_o_p(2) and _s_h_m_c_t_l(2) system
call descriptions, the permission required for an operation is given as
"{token}", where "token" is the type of permission needed interpreted as
follows:
00400 Read by user
00200 Write by user
00040 Read by group
00020 Write by group
00004 Read by others
00002 Write by others
Read and write permissions on a shmid are granted to a process if one or
more of the following are true:
The effective user ID of the process is super-user.
The effective user ID of the process matches sssshhhhmmmm____ppppeeeerrrrmmmm....ccccuuuuiiiidddd or
sssshhhhmmmm____ppppeeeerrrrmmmm....uuuuiiiidddd in the data structure associated with _s_h_m_i_d and the
appropriate bit of the ``user'' portion (0600) of sssshhhhmmmm____ppppeeeerrrrmmmm....mmmmooooddddeeee is
set.
The effective group ID of the process matches sssshhhhmmmm____ppppeeeerrrrmmmm....ccccggggiiiidddd or
sssshhhhmmmm____ppppeeeerrrrmmmm....ggggiiiidddd and the appropriate bit of the ``group'' portion (060)
of sssshhhhmmmm____ppppeeeerrrrmmmm....mmmmooooddddeeee is set.
The appropriate bit of the ``other'' portion (06) of sssshhhhmmmm____ppppeeeerrrrmmmm....mmmmooooddddeeee
is set.
Otherwise, the corresponding permissions are denied.
SSSSppppeeeecccciiiiaaaallll PPPPrrrroooocccceeeesssssssseeeessss The processes with a process ID of 0 and a process ID
of 1 are special processes and are referred to as _p_r_o_c_0 and _p_r_o_c_1.
_P_r_o_c_0 is the scheduler. _P_r_o_c_1 is the initialization process (_i_n_i_t).
Proc1 is the ancestor of every other process in the system and is used to
control the process structure.
SSSSTTTTRRRREEEEAAAAMMMMSSSS A set of kernel mechanisms that support the development of
network services and data communication _d_r_i_v_e_rs. It defines interface
standards for character input/output within the kernel and between the
kernel and user level processes. The STREAMS mechanism is composed of
utility routines, kernel facilities and a set of data structures.
SSSSttttrrrreeeeaaaammmm A stream is a full-duplex data path within the kernel between a
user process and driver routines. The primary components are a _s_t_r_e_a_m
_h_e_a_d, a _d_r_i_v_e_r and zero or more _m_o_d_u_l_e_s between the _s_t_r_e_a_m _h_e_a_d and
_d_r_i_v_e_r. A _s_t_r_e_a_m is analogous to a Shell pipeline except that data flow
number in use and the current configured number may be retrieved via the
_s_a_r -_v command.
{_N_F_I_L_E__M_A_X} is the maximum number of open files that can be
simultaneously active system wide. This is limited only by the amount of
memory in the system. The current number in use and the maximum number
that has ever been allocated may be retrieved via the _s_a_r -_v command.
{_F_L_O_C_K__M_A_X} is the maximum number of file locks system wide that may be
active. This is limited only by the amount of memory in the system. The
current number in use and the maximum number that has ever been allocated
may be retrieved via the _s_a_r -_v command.
{_N_A_M_E__M_A_X} is the maximum length of a file name. It is defined in
_l_i_m_i_t_s._h and is not modifiable.
{_P_A_T_H__M_A_X} is the maximum length of a path name. It is defined in
_l_i_m_i_t_s._h and is not modifiable.
{_L_I_N_K__M_A_X} is the maximum number of hard links that may be made to a
given file. It is defined in _l_i_m_i_t_s._h and is not modifiable.
{_O_P_E_N__M_A_X} is the maximum number of open files a given process may have.
The minimum value this can have is defined in _l_i_m_i_t_s._h. It is the
resource limit _RRRR_LLLL_IIII_MMMM_IIII_TTTT______NNNN_OOOO_FFFF_IIII_LLLL_EEEE defined in _ssss_eeee_tttt_rrrr_llll_iiii_mmmm_iiii_tttt (2). The initial
current and maximum limits may be changed by setting the variables
_r_l_i_m_i_t__n_o_f_i_l_e__c_u_r and _r_l_i_m_i_t__n_o_f_i_l_e__m_a_x within the range defined in
/_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l. The current number of open files configured
may be obtained programmatically via _g_e_t_r_l_i_m_i_t(2), _g_e_t_d_t_a_b_l_e_s_i_z_e(2),
_s_y_s_c_o_n_f(2), or _u_l_i_m_i_t(2); and may be obtained from the shell by either
the _l_i_m_i_t or _u_l_i_m_i_t built-in command.
{_C_H_I_L_D__M_A_X} is the maximum number of processes a given user may have
running simultaneously. The minimum value this can have is defined in
_l_i_m_i_t_s._h. It is modifiable at runtime by setting the variable _m_a_x_u_p
within the range defined in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l. The current
configured maximum may be obtained from _s_y_s_c_o_n_f(2).
{_S_H_L_I_B__M_A_X} is the maximum number of shared libraries a program can link
with. It is modifiable at runtime by setting the variable _s_h_l_b_m_a_x within
the range defined in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l.
{_A_R_G__M_A_X} is the maximum number of bytes that may be passed via _e_x_e_c.
The minimum value this can have is defined in _l_i_m_i_t_s._h. It is modifiable
at runtime by setting the variable _n_c_a_r_g_s within the range defined in
/_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l. The current configured maximum may be obtained
from _s_y_s_c_o_n_f(2).
{_F_I_L_E_S_I_Z_E__M_A_X} is the maximum size in bytes that a single file can grow
to. It is the resource limit _RRRR_LLLL_IIII_MMMM_IIII_TTTT______FFFF_SSSS_IIII_ZZZZ_EEEE defined in _ssss_eeee_tttt_rrrr_llll_iiii_mmmm_iiii_tttt (2). The
initial current and maximum limits may be changed by setting the
variables _r_l_i_m_i_t__f_s_i_z_e__c_u_r and _r_l_i_m_i_t__f_s_i_z_e__m_a_x within the range defined
in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l.
{_P_R_O_C_S_I_Z_E__M_A_X} is the maximum virtual size a process can grow to. A
process is made up an arbitrary number of virtual spaces. There are
limits on the total size of process as well as certain limits on
individual spaces. The overall limit is defined by the resource limit
_RRRR_LLLL_IIII_MMMM_IIII_TTTT______VVVV_MMMM_EEEE_MMMM. The initial current and maximum limits may be changed by
setting the variables _r_l_i_m_i_t__v_m_e_m__c_u_r and _r_l_i_m_i_t__v_m_e_m__m_a_x within the
range defined in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l. The maximum stack size is
defined by the resource limit _RRRR_LLLL_IIII_MMMM_IIII_TTTT______SSSS_TTTT_AAAA_CCCC_KKKK. The initial current and
maximum limits may be changed by setting the variables _r_l_i_m_i_t__s_t_a_c_k__c_u_r
and _r_l_i_m_i_t__s_t_a_c_k__m_a_x within the range defined in
/_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l. The maximum data size is defined by the
resource limit _RRRR_LLLL_IIII_MMMM_IIII_TTTT______DDDD_AAAA_TTTT_AAAA. The initial current and maximum limits may
be changed by setting the variables _r_l_i_m_i_t__d_a_t_a__c_u_r and _r_l_i_m_i_t__d_a_t_a__m_a_x
within the range defined in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l. The maximum size
of a shared memory segment is modifiable at sysgen time by setting the
variable _s_h_m_m_a_x within the range defined in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_s_h_m.
{_S_H_M_S_E_G__M_A_X} is the maximum number of shared memory segments system wide.
It is modifiable at sysgen time by setting the variable _s_h_m_m_n_i within the
range defined in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_s_h_m.
{_S_H_M_A_T__M_A_X} is the maximum number of shared memory segments a given
process may attach to. It is modifiable at sysgen time by setting the
variable _s_s_h_m_s_e_g within the range defined in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_s_h_m.
{_S_Y_M_L_I_N_K__M_A_X} is the maximum number of symbolic links a given path name
traversal will follow before assuming there is a loop. It is modifiable
at runtime by setting the variable _m_a_x_s_y_m_l_i_n_k_s within the range defined
in /_v_a_r/_s_y_s_g_e_n/_m_t_u_n_e/_k_e_r_n_e_l.
{_P_L_O_C_K__M_A_X} is the maximum number of pages a non-privileged process is
allowed to lock at any one time. It is modifiable at runtime by setting
the variable _m_a_x_l_k_m_e_m within the range defined in